package com.version1.diabeco.ui.peso;

import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;

import com.version1.diabeco.R;
import com.version1.diabeco.data.peso.PesoDaoImpl;
import com.version1.diabeco.model.peso.Peso;



public class ActivityListaRegistrosPeso extends Activity {
	public static final String INTENT_VALUE_PESO = "Peso";
	private List<Peso> peso;
	ListView listaPeso;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_lista_registros_peso);
		
		//Elementos de la pantalla
		listaPeso = (ListView) findViewById(R.id.listViewPeso);
		
		this.inicializarListaPeso();
	}

	
	private void inicializarListaPeso() {
		
//		List<Peso> lista = PesoDaoImpl.getInstance(this).selectAll();
		List<Peso> lista = PesoDaoImpl.getInstance(this).select5Dias();
		
		this.setPeso(lista);

		List<Peso> peso = this.getPeso();

		if (!peso.isEmpty()) {

			ArrayAdapter<Peso> pesoAdapter = new PesoAdapter(this, R.layout.activity_peso_fila, peso);
			
			listaPeso.setAdapter(pesoAdapter);
			
			//Click para Modificar
			listaPeso.setOnItemClickListener(new OnItemClickListener() {
	
				@Override
				public void onItemClick(AdapterView<?> pariente, View view, int posicion, long id) {
	
					// Obtenemos los datos seleccionados y llamamos a la siguiente actividad
					modificarPeso(posicion);
				}
			});
			
			//Click Largo Menu Contextual
			listaPeso.setOnItemLongClickListener(new OnItemLongClickListener() {
				@Override
				public boolean onItemLongClick(AdapterView<?> pariente, View view, int posicion, long id) {
	
					// Mostramos el menu contextual y ejecutamos la accion
					dialogMenuContextual(R.string.menu_contextual, R.array.lb_menu_contextual, posicion);
						return true;
				}
			});
		}
		
	}



	@Override
	public void onResume() {
		super.onResume(); // Always call the superclass method first

		this.inicializarListaPeso();
	}

	public void modificarPeso(int pos) {
	
		Peso peso = (Peso) (listaPeso.getItemAtPosition(pos));

		if (peso != null) {
			// Creamos el Intent
			Intent intent = new Intent(this, ActivityRegistroPeso.class);
			// Cargamos el Intent
			intent.putExtra(INTENT_VALUE_PESO, peso);
			// Iniciamos la nueva actividad
			startActivity(intent);
		}
	}

	
	/** PopUp para Mostrar una lista de valores **/
	public void dialogMenuContextual(int title, int list, final int pos) {

		AlertDialog popup;
		AlertDialog.Builder builder = new AlertDialog.Builder(this);

		builder.setCancelable(true);
		builder.setTitle(title);
		builder.setIcon(android.R.drawable.ic_menu_more);
		builder.setItems(list, new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int selectedItem) {

				mostrarMensajeConfirmacion(pos);
				dialog.cancel();
			}
		});

		// Cremos el PopUp y lo mostramos
		popup = builder.create();
		popup.show();
	}

	/** PopUp para Mostrar una lista de valores **/
	public void mostrarMensajeConfirmacion(final int pos) {
		
	AlertDialog popup;
	AlertDialog.Builder builder = new AlertDialog.Builder(this);
	 
    builder.setTitle(R.string.titulo_confimacion);
    builder.setMessage(R.string.pregunta_confirmacion);
    builder.setIcon(android.R.drawable.ic_dialog_alert);
    
    	//Boton Aceptar
    	builder.setPositiveButton(R.string.btn_aceptar, new DialogInterface.OnClickListener() {

    		public void onClick(DialogInterface dialog, int position) {

    			ListView listView = (ListView) findViewById(R.id.listViewPeso);
    			Peso peso = (Peso) (listView.getItemAtPosition(pos));            	
    			ArrayAdapter<Peso> arrayAdapter = (ArrayAdapter<Peso>) listView.getAdapter();
    			
    	    	PesoDaoImpl.getInstance(ActivityListaRegistrosPeso.this).deleteById(peso.getId());
            	getPeso().remove(peso);
            	
            	arrayAdapter.notifyDataSetChanged();

    			Toast.makeText(ActivityListaRegistrosPeso.this, "Peso Borrado", Toast.LENGTH_SHORT).show();

    	        dialog.cancel();
    	    	}
        	});

    	//Boton Cancelar    
	    builder.setNegativeButton(R.string.btn_cancelar, new DialogInterface.OnClickListener() {
	    public void onClick(DialogInterface dialog, int which) {
		        dialog.cancel();
	    }
	    });
 
    //Cremos el PopUp y lo mostramos
	popup = builder.create();
	popup.show();		
	}

	
	public List<Peso> getPeso() {
		return peso;
	}

	
	public void setPeso(List<Peso> peso) {
		this.peso = peso;
	}

	
	/** Se llama al hacer click en "Agregar Peso" */
	public void sendMsgAgregarPeso(View view) {
		// Creamos el Intent
		Intent intent = new Intent(this, ActivityRegistroPeso.class);
		// Iniciamos la nueva actividad
		intent.putExtra(INTENT_VALUE_PESO, new Peso());
		startActivity(intent);
	}	
}
